//
//  WYHPrintDataAppendTool.h
//  BluetoothPrint
//
//  Created by wang on 2017/11/3.
//  Copyright © 2017年 wang. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "WYHPrinterParam.h"


@interface WYHPrintDataAppendTool : NSObject

@property (nonatomic, strong) NSMutableDictionary *printDic;
//- (void)aaa:(NSInteger)aa;
//- (void)bbb:(NSInteger)bb;
- (void)printRowHeightSpaceZero;
- (void)printRowHeightSpaceNormal;
- (void)printRowWidthSpaceZero;
- (void)printRowWidthSpaceNormal;

/**
 打印机参数
 */
@property (nonatomic, strong) WYHPrinterParam *printerParam;
/// 打印数据
@property (atomic, strong, readonly) NSMutableArray<NSMutableData *> *datas;

/**
 开始拼接数据   连接完打印机 开始打印的时候自动拼接的   拼接数据根据各种情况看是否需要清除原来拼接数据，目前是在打印页面手动清除的（不清除数据连续打印数据重复出现）
 */
- (void)printAppendData;

/**
 拼接数据
 
 @param data data description
 */
- (void)appendData:(NSData *)data;

/**
 打印文本的对齐方式
 */
@property (nonatomic, assign) NSTextAlignment textAlignment;

/**
 左边间距 cm
 */
@property (nonatomic, assign) float leftMargin;

/**
 字体的比例  1 3  目前格式只支持 大小 二个字体
 */
@property (nonatomic, assign) NSInteger fontScale;
/**
 设置粗的字体
 */
@property (nonatomic, assign) BOOL boldFont;

/**
 打印文字
 
 @param text NSString
 */
- (void)printText:(NSString *)text;

/**
 特殊的打印文字  210 的根据方向 前面打印空格
 */
- (void)printSpecialBlankText:(NSString *)text;
/**
 打印空行
 @param line 空行数
 */
- (void)printLineFeed:(NSInteger)line;
/**
 换行 \r\n
 */
- (void)printEnter;
/**
 打印线
 */
- (void)printLine;
/**
 打印线
 
 @param left 起点
 real 实线
 */
- (void)printLineLeft:(double)left real:(BOOL)real;
/**
 打印实线线
 */
- (void)printRealLine;
/**
 打印粗体文字
 */
- (void)printBlodText:(NSString *)text;
/**
 打印距离左侧固定距离的文字
 */
- (void)printText:(NSString *)text leftMargin:(float)margin;
/**
 打印二维码
 */
- (void)printQRCodeWithInfo:(NSString *)info size:(NSInteger)size alignment:(NSTextAlignment)alignment;

//获取字符串的字节长度
+ (NSInteger)getStrByte:(NSString *)str;


//210 靠右的时候需要打印空格
- (void)printBlankStrForStr:(NSString *)str;
//210 居中的时候需要打印空格
- (void)printCenterBlankStrForStr:(NSString *)str;
/**
 
 //打印靠右的文字后面加上2个空格
 @param str 打印文字
 @return 返回需要打印的内容
 */
- (NSString *)printStrAddBlankForStr:(NSString *)str;

/**
 打印字符串最大限制
 
 @param str 需要打印的字符串
 @param limit 最大长度
 @return 返回打印字符串
 */
- (NSString *)printStr:(NSString *)str limit:(NSInteger)limit;


//结束打印 打印空行 并且对部分打印机发出切纸命令
- (void)printEnd;


//切纸
- (void)paperCut;
//设置为打印页模式
- (void)setPrintPage:(BOOL)page;
//一行左右二端打印文字
- (void)printLineTextFirstStr:(NSString *)firstStr secondStr:(NSString *)secondStr;
//一行中间打印二段 左右间距 空格数 两头打空格
- (void)printCenterBlankCount:(NSInteger)blankCount firstStr:(NSString *)firstStr secondStr:(NSString *)secondStr;


/**
 判断一行是否可以打印两个字符串
 

 @return 大于0即可
 */
- (NSInteger)judgePrintLineStr:(NSString *)firstStr secondStr:(NSString *)secondStr;


/**
 多个字符串的拼接打印  打印前 可以设置 从左还是从又打印
 
 */
- (void)someStrPrintAppend:(NSArray *)strArr textAlignment:(NSTextAlignment)textAlignment;

/**
 多个字符串的拼接打印  打印前 可以设置 从左还是从又打印
 
 
 @param symbol 间隔符号 默认 ;
 */
- (void)someStrPrintAppend:(NSArray *)strArr textAlignment:(NSTextAlignment)textAlignment symbol:(NSString *)symbol;

/**
 打印一些数据

 @param strArr 要打印的数组 字符串
 @param leftMarginArr 打印数据对应的起点  double
 @param textAlignment 左右方向
 */
- (void)someStrPrintAppend:(NSArray *)strArr leftMarginArr:(NSArray *)leftMarginArr textAlignment:(NSTextAlignment)textAlignment;

/**
 打印二维码 实例
 */
- (void)printStoreWechatOfficialQRCode;


@end
